/**
 * 表单组件 Store
 * 管理表单状态和操作历史
 */
import { observable, action } from '../../../../../miniprogram_npm/mobx-miniprogram/index';

export const formStore = observable({
  // 当前表单状态
  formState: [],
  
  // 操作历史记录（用于撤销功能）
  fieldHistory: [],
  
  // 历史记录最大长度
  maxHistoryLength: 10,
  
  // 保存表单状态
  saveFormState: action(function(fields) {
    if (!fields) return;
    this.formState = JSON.parse(JSON.stringify(fields));
  }),
  
  // 添加当前状态到历史记录
  addToHistory: action(function(fields) {
    if (!fields) return;
    
    // 深拷贝以确保历史状态不会被修改
    const historyCopy = JSON.parse(JSON.stringify(fields));
    
    // 添加到历史记录开头
    this.fieldHistory.unshift(historyCopy);
    
    // 限制历史记录长度
    if (this.fieldHistory.length > this.maxHistoryLength) {
      this.fieldHistory.pop();
    }
  }),
  
  // 从历史记录恢复状态
  restoreFromHistory: action(function() {
    if (this.fieldHistory.length === 0) {
      return null;
    }
    
    // 取出最近的历史记录
    const lastState = this.fieldHistory.shift();
    
    // 更新当前状态
    this.formState = lastState;
    
    return lastState;
  }),
  
  // 清空历史记录
  clearHistory: action(function() {
    this.fieldHistory = [];
  })
}); 